-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Started the Convergence system #28848
base: next
Are you sure you want to change the base?
Conversation
fef1637
to
01cd337
Compare
Job Documentation, step Docs: sync website on 0920858 wanted to post the following: View the site here This comment will be updated on new commits. |
01cd337
to
551e2ae
Compare
Job Coverage, step Generate coverage on 0920858 wanted to post the following: Framework coverage
Modules coverageContact
Full coverage reportsReports
Warnings
This comment will be updated on new commits. |
I'm considering renaming |
551e2ae
to
edb0c33
Compare
c942aa4
to
2b00bb4
Compare
OpenMPI failure is a lie. Invalidate makes different tests fail. |
@GiudGiud @lindsayad Ready for review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
quick part 1 review
you ll want to mention Convergence in NonlinearSystem.md at
## Convergence Criteria for the Nonlinear System
lots of functions longer than 6 lines 🤔
framework/doc/content/source/actions/AddDefaultConvergenceAction.md
Outdated
Show resolved
Hide resolved
framework/doc/content/source/convergence/FEProblemConvergence.md
Outdated
Show resolved
Hide resolved
framework/doc/content/source/convergence/FEProblemConvergence.md
Outdated
Show resolved
Hide resolved
framework/doc/content/source/convergence/FEProblemConvergence.md
Outdated
Show resolved
Hide resolved
Most of those are inherited technical debt 😄 For example, there was a bunch of cut and paste from problems into convergences. My long-term plan here is to destroy these convergences in favor of smaller pieces. I see these convergences (e.g., FEProblemConvergence) as temporary objects for backwards-compatibility. Then, refactored, smaller convergences replace them in time. |
Yes that makes sense. You already cut out the "min/max" iter based convergence from that object. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good.
framework/doc/content/source/convergence/FEProblemConvergence.md
Outdated
Show resolved
Hide resolved
modules/contact/include/convergence/AugmentedLagrangianContactConvergence.h
Show resolved
Hide resolved
modules/contact/src/problems/AugmentedLagrangianContactProblemInterface.C
Show resolved
Hide resolved
542dd04
to
5a5abc3
Compare
@GiudGiud @lindsayad Ready for another round. I believe I've addressed your comments, so please check them off to confirm. |
5a5abc3
to
0920858
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these and the equation system thing I asked on slack then good to go for me
framework/doc/content/source/convergence/DefaultNonlinearConvergence.md
Outdated
Show resolved
Hide resolved
framework/doc/content/source/convergence/DefaultNonlinearConvergence.md
Outdated
Show resolved
Hide resolved
Co-authored-by: Guillaume Giudicelli <[email protected]>
This PR revives #26744.
This creates a new system: Convergence. See #24128.
I'm putting this up now so that I can document some TODOs. Because it's in a messy state, I plan to squash everything into one commit before merging.
Tasks that remain:
checkConvergence()
API. Currently I have iteration index as the one and only argument, since we may want to use the same convergence class for multiple types of convergence check, and different types of convergence check will need to obtain that index differently. The same argument can be applied to others. Also I think that some classes will only be compatible with certain types of convergence check. We would probably want to do some checking to make sure it's used in a compatible way. Perhaps we should have some kind ofIterationType
argument? I'm open to other ideas.UPDATE: Opened Make Convergence object checks aware of solve type #28927 for this task.
EquationSystems
- does it do anything to set convergence parameters in there? ShouldConvergence
being doing that? Some parameters inResidualConvergence
are unclear on if they're actually used, like the linear solve parameters. They get set in theEquationSystems
object (which might be eventually set to PETSc), but at least some do not seem to come back into the class in the convergence check, maybe only getting used in libMesh's own convergence checks?UPDATE 1: The
EquationSystems
object is populated with the convergence-related parameters and then used in various convergence checks of different solvers, which do not all have the freedom to specify a generic convergence criteria. My plan is to not interact with theEquationSystems
object from theConvergence
classes if it is not necessary, and let the Executioner parameters populate it, as they do currently.UPDATE 2: The eigen executioners modify convergence-related parameters through
EquationSystems
, so it looks like we'll need to work withEquationSystems
in the Convergence object after all.ResidualConvergence
? The current behavior is to allow the executioner parameters but override them. That's maybe the simplest implementation-wise, but seems very error-prone for users.UPDATE: I plan to give only a warning if the user specifies nonlinear convergence parameters in the executioner when they have a non-default convergence.
PostprocessorConvergence
to perform checks ofexecute_on
. Here the Convergence would need to know what kind of iterations it will be used with, so we need to think about how to do this.Update: Opened Perform checks on execute_on for PostprocessorConvergence #28928 for this task.
I opened another issue related to this: #28936.